/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package labbd_._projetofinal;

import java.awt.Image;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.sql.Blob;
import java.sql.Date;
import java.sql.SQLException;
import javax.imageio.ImageIO;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleConnection;

/**
 *
 * @author bimaoe
 */
public class Compra {
	private int idCompra;
	private int idProduto;
	private int nroOferta;
	private Date dataCompra;
	private Blob foto;

	public Compra (int in_idcompra, int in_idproduto, int in_nrooferta,
		Date in_datacompra, Blob in_foto) {
		idCompra = in_idcompra;
		idProduto = in_idproduto;
		nroOferta = in_nrooferta;
		dataCompra = in_datacompra;
		foto = in_foto;
	}

	public int getIdCompra () {
		return idCompra;
	}

	public int getIdProduto () {
		return idProduto;
	}

	public int getNroOferta () {
		return nroOferta;
	}

	public Date getDataCompra() {
		return dataCompra;
	}

	public Image getFoto() {
		return getImage(foto);
	}

	public static Image getImage(Blob foto){
		Image image = null;
	try {
		InputStream is = foto.getBinaryStream();
		image = ImageIO.read(is);

	} catch (IOException ex) {
		System.err.println ("Exception:"+ex.getMessage());
	} catch (SQLException ex) {
		System.err.println ("Exception:"+ex.getMessage() + ex.getErrorCode());
	}

		return image;
	}
	
	public static int compraOferta(OracleConnection in_conn, int in_idproduto, int in_nrooferta,
			String in_email, String in_tipo) throws SQLException{
		int idcompra = -1;
		String query = "begin ? := pkg_compra.func_novaCompra(?,?,?,?); end;";

		OracleCallableStatement Ocallstmt = (OracleCallableStatement) in_conn.prepareCall(query);
		Ocallstmt.registerOutParameter(1, java.sql.Types.INTEGER);
		Ocallstmt.setInt(2, in_idproduto);
		Ocallstmt.setInt(3, in_nrooferta);
		Ocallstmt.setString(4, in_email);
		Ocallstmt.setString(5, in_tipo);
		try{
			Ocallstmt.execute();
			idcompra = Ocallstmt.getInt(1);
			System.err.println("Compra efetuada com sucesso");
		} catch (SQLException ex) {
			System.err.println ("Compra Exception:"+ex.getMessage() + ex.getErrorCode());
		}
		return idcompra;
	}
	
	public static void setRecomendacao (OracleConnection in_conn, int in_idcompra,
		BigDecimal in_cpfrecomenda, BigDecimal in_cpfrecomendado,
		int in_idproduto, int in_nrooferta ) throws SQLException {
		String query = "begin pkg_compra.proc_setRecomendacao(?,?,?,?,?); end;";
		OracleCallableStatement Ocallstmt = (OracleCallableStatement) in_conn.prepareCall(query);
		Ocallstmt.setInt(1, in_idcompra);
		Ocallstmt.setBigDecimal(2, in_cpfrecomenda);
		Ocallstmt.setBigDecimal(3, in_cpfrecomendado);
		Ocallstmt.setInt(4, in_idproduto);
		Ocallstmt.setInt(5, in_nrooferta);

		Ocallstmt.execute();
	}
}
